home *** CD-ROM | disk | FTP | other *** search
/ Tech Arsenal 1 / Tech Arsenal (Arsenal Computer).ISO / tek-03 / imb9110.zip / BT.BAS < prev    next >
BASIC Source File  |  1991-10-01  |  2KB  |  88 lines

  1. '****************************************************
  2. '*  BT.BAS - test bit manuipulation routines        *
  3. '****************************************************
  4.  
  5. DECLARE SUB PrintBitList (BitList%)
  6.  
  7. ' $INCLUDE: 'BITLIST.BI'
  8.  
  9. '  Begin main module
  10.  
  11. CLS
  12. RANDOMIZE TIMER
  13.  
  14. A% = blCreate(80)
  15. B% = blCreate(80)
  16. C% = blCreate(80)
  17. IF A% = NULL OR B% = NULL OR C% = NULL THEN
  18.   PRINT "ERROR: cannot create bitlists!"
  19.   END
  20. END IF
  21.  
  22. '  Create a random bitlist
  23. FOR I% = 1 TO 79
  24.    X% = blSetBit(A%, (I%), (RND(1) < .4))
  25. NEXT I%
  26. PRINT : PRINT "The first random bitlist:"
  27. PrintBitList A%
  28.  
  29. '  Copy and invert it
  30. X% = blListOp(blCOPY, B%, A%)
  31. X% = blListOp(blINVERT, B%, 0)
  32. PRINT : PRINT "The inversion of the 1st list of bits:"
  33. PrintBitList B%
  34.  
  35. '  Create a random bitlist
  36. FOR I% = 1 TO 79
  37.    X% = blSetBit(C%, (I%), (RND(1) < .4))
  38. NEXT I%
  39. PRINT : PRINT "Another random bitlist:"
  40. PrintBitList C%
  41.  
  42. '  Show the union of the orig & random lists
  43. X% = blListOp(blUNION, C%, A%)
  44. PRINT : PRINT "The union of the two random bit lists:"
  45. PrintBitList C%
  46.  
  47. '  Show intersection of inverted original & random lists
  48. X% = blListOp(blINTERSECT, C%, B%)
  49. PRINT
  50. PRINT "Intersection of the first list inverted and the 2nd list"
  51. PrintBitList C%
  52.  
  53. '  Clear a list
  54. X% = blListOp(blCLEAR, B%, 0)
  55. PRINT : PRINT "A cleared bitlist:"
  56. PrintBitList B%
  57.  
  58. '  Set a list
  59. X% = blListOp(blSET, B%, 0)
  60. PRINT : PRINT "A set bitlist:"
  61. PrintBitList B%
  62.  
  63. '  Delete the bitlists
  64. blDestroy A%
  65. blDestroy B%
  66. blDestroy C%
  67. END
  68.  
  69. SUB PrintBitList (bl%) STATIC
  70. '****************************************************
  71. '*  PrintBitList - subprogram to display a bit list *
  72. '****************************************************
  73. FOR I% = 1 TO 79
  74.    IF blGetBit(bl%, (I%)) THEN
  75.      PRINT "T";
  76.    ELSEIF I% MOD 10 = 0 THEN
  77.      PRINT CHR$(I% \ 10 + ASC("0"));
  78.    ELSEIF I% MOD 5 = 0 THEN
  79.      PRINT "+";
  80.    ELSE
  81.      PRINT "-";
  82.    END IF
  83. NEXT I%
  84. PRINT
  85. END SUB
  86.  
  87.  
  88.